package com.gx.util.dbutil;

import org.apache.commons.dbutils.QueryRunner;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;

/**
 * Created by gx on 2017/7/7.
 */
public class DBUtilsHelper {
    //数据源配置
    private static final Logger log = LoggerFactory.getLogger(DBUtilsHelper.class);
    private static DataSource dataSource = null;
    private QueryRunner runner = null;



//    默认构造
    public DBUtilsHelper() {
        try {
            this.dataSource = DbPoolConnection.getInstance().getDataSource();
        } catch (SQLException e) {
            log.error("获取 DbPoolConnection 连接池类 失败",e.getMessage(),e);
            e.printStackTrace();
        }
    }
    public DBUtilsHelper(String fileName) {
        try {
            this.dataSource = DbPoolConnection.getInstance(fileName).getDataSource();
        } catch (SQLException e) {
            log.error("获取 DbPoolConnection 连接池类 失败",e.getMessage(),e);
            e.printStackTrace();
        }
    }

//    注入DataSource构造
    public DBUtilsHelper(DataSource ds) {
        this.dataSource = ds;
    }

    public static DataSource getDataSource() {
        return dataSource;
    }

    public QueryRunner getRunner() {
        QueryRunner  runner = new QueryRunner(this.dataSource);
        return  runner;
    }


    /**
     *ArrayHandler：把结果集中的第一行数据转成对象数组。
     *ArrayListHandler：把结果集中的每一行数据都转成一个数组，再存放到List中。
     *BeanHandler：将结果集中的第一行数据封装到一个对应的JavaBean实例中。
     *BeanListHandler：将结果集中的每一行数据都封装到一个对应的JavaBean实例中，存放到List里。
     *ColumnListHandler：将结果集中某一列的数据存放到List中。
     *KeyedHandler(name)：将结果集中的每一行数据都封装到一个Map里，再把这些map再存到一个map里，其key为指定的key。
     *MapHandler：将结果集中的第一行数据封装到一个Map里，key是列名，value就是对应的值。
     *MapListHandler：将结果集中的每一行数据都封装到一个Map里，然后再存放到List
     */




}
